package com.shunda.trade.service.impl;

import com.shunda.common.utils.DateUtils;
import com.shunda.trade.entity.TradeUserProfit;
import com.shunda.trade.mapper.TradeUserProfitMapper;
import com.shunda.trade.service.TradeUserProfitService;
import org.springframework.stereotype.Service;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;

import javax.annotation.Resource;
import java.util.Calendar;
import java.util.Date;

/**
 * 用户信息表(TradeUserProfit)表服务实现类
 *
 * @author makejava
 * @since 2025-03-13 21:36:54
 */
@Service("tradeUserProfitService")
public class TradeUserProfitServiceImpl implements TradeUserProfitService {
    @Resource
    private TradeUserProfitMapper tradeUserProfitDao;

    /**
     * 通过ID查询单条数据
     *
     * @param profitId 主键
     * @return 实例对象
     */
    @Override
    public TradeUserProfit queryById(Long profitId) {
        return this.tradeUserProfitDao.queryById(profitId);
    }

    /**
     * 分页查询
     *
     * @param tradeUserProfit 筛选条件
     * @param pageRequest      分页对象
     * @return 查询结果
     */
    @Override
    public Page<TradeUserProfit> queryByPage(TradeUserProfit tradeUserProfit, PageRequest pageRequest) {
        long total = this.tradeUserProfitDao.count(tradeUserProfit);
        return new PageImpl<>(this.tradeUserProfitDao.queryAllByLimit(tradeUserProfit, pageRequest), pageRequest, total);
    }

    /**
     * 新增数据
     *
     * @param tradeUserProfit 实例对象
     * @return 实例对象
     */
    @Override
    public TradeUserProfit insert(TradeUserProfit tradeUserProfit) {
        this.tradeUserProfitDao.insert(tradeUserProfit);
        return tradeUserProfit;
    }

    /**
     * 修改数据
     *
     * @param tradeUserProfit 实例对象
     * @return 实例对象
     */
    @Override
    public TradeUserProfit update(TradeUserProfit tradeUserProfit) {
        this.tradeUserProfitDao.update(tradeUserProfit);
        return this.queryById(tradeUserProfit.getProfitId());
    }

    /**
     * 通过主键删除数据
     *
     * @param profitId 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Long profitId) {
        return this.tradeUserProfitDao.deleteById(profitId) > 0;
    }

    /**
     * 更新分润权重
     */
    @Override
    public void userProfitPoint() {
        //更新分润权重
        // 获取当前日期
        Date currentDate = new Date();
        String toDay = DateUtils.parseDateToStr("yyyy-MM-dd", new Date());
        System.out.println("当前日期：" + toDay);
        // 创建 Calendar 对象，并设置为当前日期
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(currentDate);
        // 获取30天前的日期
        calendar.add(Calendar.DAY_OF_MONTH, -29);
        Date days29Ago = calendar.getTime();
        String days29AgoStr = DateUtils.parseDateToStr("yyyy-MM-dd", days29Ago);
        System.out.println("29天前的日期：" + days29AgoStr);

        // 获取30天前的日期
        calendar.add(Calendar.DAY_OF_MONTH, -30);
        Date dys59Ago = calendar.getTime();
        String dys59AgoStr = DateUtils.parseDateToStr("yyyy-MM-dd", dys59Ago);
        System.out.println("59天前的日期：" + dys59AgoStr);
        //金股转银股
        tradeUserProfitDao.updateGoldToSliver(dys59AgoStr,days29AgoStr);
        //银股转铜股
        tradeUserProfitDao.updateSliverToCopper(dys59AgoStr);

    }
}
